package dao;

/**
 *
 * @author eagle
 */
import dominio.EstudianteLogro;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;

public class EstudianteLogroDao {

    private EntityManager em;
    private EstudianteLogro eslg = new EstudianteLogro();

    public EstudianteLogroDao(EntityManager em) {
        this.em = em;
    }

    public EstudianteLogro crearEstudianteLogro(Integer idEstudiante, int idLogro, String calificacionLogro) {

        eslg.setIdlogro(idLogro);
        eslg.setIdestudiante(idEstudiante);
        eslg.setCalificacionlogro(calificacionLogro);
        em.persist(eslg);
        return eslg;
    }
/*
    public Area intanciarArea(Object objeto) {
        ar = (Area) objeto;
        return ar;
    }
*/

   /*
    public Area encontrarArea(Integer idArea) {
        return em.find(Area.class, idArea);// con esta funcion se buscas un dato por primary key, el primer parametro es nuestra clase entidad
    }
    */

    /*
    public Area encontrarArea(String nombreArea) {
        Query q = em.createQuery("SELECT ar FROM Area ar WHERE ar.nombreArea='" + nombreArea + "'");
        if (q.getResultList().isEmpty() == true) {
            return null;
        }
            ar = (Area) q.getSingleResult();
            return ar;
        }
    }*/

    /*
    public void borrarArea(Integer idArea) {
        ar = encontrarArea(idArea);//en este caso podemos borrar un Area por nombre
        if (ar != null) {//si no lo encuentra por supuesto no lo intenta borrar
            em.remove(ar);// borra de la tabla ese registro
            }

    }
*/

    
    public EstudianteLogro actualizarCalificaciones(String idEstudiante, String idLogro,String calificacion) {
        
        eslg = encontrarCalificacionLogroEst(idEstudiante,idLogro); //Uso un metodo de esta misma clase que me retorna un solo dato con una busqueda por nombre
        if(eslg==null)
        {
        System.out.println("Error No. 31 No existe logro asociado al estudiante");
        }
        else if (calificacion.equals("true")) {
                eslg.setCalificacionlogro("s");
            }
       else if (calificacion.equals("false")) {
                eslg.setCalificacionlogro("n");
            }
        return eslg;
    }

    /*
    public List encontrarAreas() { //encontrar todos los usuarios
        Query query = em.createQuery("SELECT ar.nombreArea FROM Area ar");// Ojo la sentencia está en Java Query Language, no SQL
        List<Area> lista = query.getResultList();
        return (lista);
    }
*//*
    public List encontrarAreasId() { //encontrar todos los usuarios
        Query query = em.createQuery("SELECT ar.idArea FROM Area ar");// Ojo la sentencia está en Java Query Language, no SQL
        List<Area> lista = query.getResultList();
        return (lista);
    }
*/
public EstudianteLogro encontrarCalificacionLogroEst(String idEst,String idLogro)
{
        Query query = em.createQuery("SELECT eslg FROM EstudianteLogro eslg WHERE eslg.idestudiante="+idEst+" AND eslg.idlogro="+idLogro);
        if (query.getResultList().isEmpty() == true) {
            return null;
        }
        else {
            EstudianteLogro est = (EstudianteLogro) query.getSingleResult();
            return est;
        }

}


    public List<EstudianteLogro> encontrarEstudianteLogroGrado(Integer idAsignatura){
        Query query = em.createQuery("SELECT eslg.idestlogro, eslg.idestudiante, eslg.idlogro, eslg.calificacionlogro  FROM Logro lg, EstudianteLogro eslg WHERE lg.idlogro = eslg.idlogro AND lg.idasignatura="+idAsignatura);
        List<EstudianteLogro> lista = query.getResultList();
        return lista;
    }
}
